package park;

public class J14Ex46CalenderV2 {

	public static void main(String[] args) {

		// 서기 1년 1월 1일은 [월]요일임
		// 그러면, 1년 12월 13일의 요일은?
		// 1년은 일반적으로 365일 (평년)
		// 31,[28],31,30,31,30,31,31,30,31,30,31
		// 하지만,1년이 366일인 경우도 있음 (윤년)
		// 31,[29],31,30,31,30,31,31,30,31,30,31

		// 윤년 : 4로 나누어지되, 100으로 나누어 떨어지지 않거나, 400으로 나누어 떨어지는 년도
		// 0 : 일 , 1 : 월 , 2 : 화 , ...... 6 : 토

		int myday;
		int cyear = 1;
		int allday = 365;
		int leapyear = 0;

		// 윤년 횟수 계산

		if ((cyear % 4 == 0 && cyear % 100 != 0) || cyear % 400 == 0) {
			++leapyear;

		}

		// 총 일수 계산한 후 7로 나눈 나머지 계산
		myday = ((cyear * allday) + leapyear) % 7;

		System.out.println("1-12-31일 의 요일은 " + myday);

		// 만일,2014-12-31의 요일은?

		cyear = 2014;
		leapyear = 0;
		
		for (int i = 1; i <= cyear; ++i) {

			if ((i % 4 == 0 && i % 100 != 0) || i % 400 == 0) {
				++leapyear;
			}
			
		}// 윤년 계산

		//System.out.println("윤년의 합계는"+leapyear);
		
		myday = ((cyear * allday) + leapyear) % 7;

		System.out.println("서기 2014-12-31일 의 요일은 " + myday);

		// 달력 출력
		String result = "\n\t\t\t\t" + (cyear + 1);
		result += "년 1월 \n";
		result += "\t--------------------------------------------------\n";
		result += "\t일\t월\t화\t수\t목\t금\t토\n";

		// 줄바꿈 처리를 위한 변수
		int linecount = 0;
		
		// 공백처리
		if (myday > 0) {

			for (int j = 0; j < myday; ++j) {
				result += "\t";
				++linecount;
			}
		}
		


		// 날짜출력

		for (int k = 1; k <= 31; ++k) {
			result += "\t" + k;
			++linecount;
			System.out.println(result);
			//1주일 지나면 밑으로 내려가게 처리해줄라고 if문을 돌린다.
			if (linecount % 7 == 0) {
				result += "\n";
				
			}
		}

	}// main

}// class
